'use strict';

const fs = require('fs')
const FORMAT = 'utf-8'
//demo.text 和 js文件处于同一路径下 且 readFile第二个参数与xxx.txt的文件编码一致
fs.readFile('demo.txt', FORMAT, function(err, data){
  if(err) {
    console.log(err)
  }else{
    console.log(data)
  }
})

//回调函数的data返回一个 Buffer 对象
//node中，buffer 对象就是一个包含零或任意个字节的数组（但与array不同)
fs.readFile('1.png', function(err, data){
  if(err){
    console.log(err)
  }else{
    console.log(data)
    console.log(`${data.length}bytes`)
    // console.log(`string = data.toString('utf-8') ==> ${data.toString(FORMAT)}`)
  }
})

//同步读取文件
//同步读取文件，不接受回调函数，函数直接返回结果
const txtContent = fs.readFileSync('demo.txt', FORMAT)
console.log(txtContent)

//对同步读取文件的错误处理，用try{...}catch(err){...} 来处理
// try{
//   var data = fs.readFileSync('demo.text', FORMAT)
//   console.log(data)
// } catch (err) {
//   console.log(err)
//   // Error: ENOENT: no such file or directory
// }

//写文件
//如果当前文件存在，则覆盖
//函数第二个参数为文件写入内容，参数类型为String默认 utf-8，若为Buffer，则为二进制文件
//函数第三个参数为回调函数，只用于检测是否写入成功
const createString = () => 'hello , node.js\nxxx'
fs.writeFile('output.txt', createString(), function(err){
  if(err) {
    console.log(err)
  }else{
    console.log('success')
  }
})

//目录
fs.readdir(__dirname, function(err, files){
  const reg = /副本{1}.*(.jpg)$/
  
  if(err){
    console.log(err)
  }else{
    files.map((file, index)=>{
      if(reg.test(file)){
        const oldName = `${file}`
        const newName = `${file.replace(/副本{1}.*\d{0,}\)/, index)}`
        fs.rename(oldName, newName, function(err){
          if(err){
            console.log(err)
          }
        })
      }
    })
  }
})
